Tegra210: skip past sc7entry-fw signature header
authorVarun Wadekar <[email protected]>
Mon, 19 Mar 2018 22:19:28 +0000 (15:19 -0700)
committerVarun Wadekar <[email protected]>
Thu, 31 Jan 2019 16:49:28 +0000 (08:49 -0800)
This patch skips past the signature header added to the sc7entry-fw
binary by the previous level bootloader. Currently, the size of
the header is 1KB, so adjust the start address and the binary size
at the time of copy.

Change-Id: Id0494548009749035846d54df417a960c640c8f9
Signed-off-by: Varun Wadekar <[email protected]>
plat/nvidia/tegra/include/t210/tegra_def.h
plat/nvidia/tegra/soc/t210/plat_psci_handlers.c

index 0f24f324cbf23462348782d4abf641b7e802b152..7e3789c65ed2d42d5d58ff827bfa6994ef54694f 100644 (file)
 #define PLAT_PHY_ADDR_SPACE_SIZE       (ULL(1) << 35)
 #define PLAT_VIRT_ADDR_SPACE_SIZE      (ULL(1) << 35)
 
+/*******************************************************************************
+ * SC7 entry firmware's header size
+ ******************************************************************************/
+#define SC7ENTRY_FW_HEADER_SIZE_BYTES  U(0x400)
+
 /*******************************************************************************
  * iRAM memory constants
  ******************************************************************************/
index b6a0b69dc2673b6aca366712c00339480882ab9a..d18a987b1384f647da483c42d386b7ccfd47e9fe 100644 (file)
@@ -381,8 +381,8 @@ int tegra_soc_pwr_domain_power_down_wfi(const psci_power_state_t *target_state)
 
                        /* Copy the firmware to BPMP's internal RAM */
                        (void)memcpy((void *)(uintptr_t)TEGRA_IRAM_BASE,
-                               (const void *)plat_params->sc7entry_fw_base,
-                               plat_params->sc7entry_fw_size);
+                               (const void *)(plat_params->sc7entry_fw_base + SC7ENTRY_FW_HEADER_SIZE_BYTES),
+                               plat_params->sc7entry_fw_size - SC7ENTRY_FW_HEADER_SIZE_BYTES);
 
                        /* Power on the BPMP and execute from IRAM base */
                        tegra_fc_bpmp_on(TEGRA_IRAM_BASE);